package cn.edu.wfit.modules.learn.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import cn.edu.wfit.common.core.annotation.Excel;
import cn.edu.wfit.common.core.web.domain.BaseEntity;

/**
 * 项目对象 wfit_project
 * 
 * @author ruoyi
 * @date 2025-07-25
 */
public class WfitProject extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 项目的唯一标识 */
    private Long id;

    /** 项目的名称 */
    @Excel(name = "项目的名称")
    private String projectName;

    /** 项目的详细描述 */
    @Excel(name = "项目的详细描述")
    private String projectDescription;

    /** 项目负责人学号 */
    @Excel(name = "项目负责人学号")
    private String projectLeaderId;

    /** 项目负责人姓名 */
    @Excel(name = "项目负责人姓名")
    private String projectLeaderName;

    /** 负责人联系方式 */
    @Excel(name = "负责人联系方式")
    private String projectLeaderLink;

    /** 项目的指导老师 */
    @Excel(name = "项目的指导老师")
    private String supervisor;

    /** 参与项目的人数限制 */
    @Excel(name = "参与项目的人数限制")
    private Long teamSize;

    /** 审核状态（0: 未通过, 1: 通过） */
    @Excel(name = "审核状态", readConverterExp = "0=:,未=通过,,1=:,通=过")
    private String reviewStatus;

    /** 项目总分值(项目完成后填写) */
    @Excel(name = "项目总分值(项目完成后填写)")
    private Long totalScore;

    /** 项目状态(0: 进行中, 1: 已完成) */
    @Excel(name = "项目状态(0: 进行中, 1: 已完成)")
    private Long projectStatus;

    /** 删除标志（0: 存在, 2: 删除） */
    private String delFlag;

    /** 项目开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "项目开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /** 项目结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "项目结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdTime;

    /** 创建人 */
    @Excel(name = "创建人")
    private String createdBy;

    /** 更新人 */
    @Excel(name = "更新人")
    private String updatedBy;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedTime;

    /** 项目图片 */
    @Excel(name = "项目图片")
    private String image;

    /**项目仓库地址*/
    @Excel(name = "项目仓库地址")
    private String projectRepository;

    public String getProjectRepository() {
        return projectRepository;
    }

    public void setProjectRepository(String projectRepository) {
        this.projectRepository = projectRepository;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setProjectName(String projectName) 
    {
        this.projectName = projectName;
    }

    public String getProjectName() 
    {
        return projectName;
    }
    public void setProjectDescription(String projectDescription) 
    {
        this.projectDescription = projectDescription;
    }

    public String getProjectDescription() 
    {
        return projectDescription;
    }
    public void setProjectLeaderId(String projectLeaderId) 
    {
        this.projectLeaderId = projectLeaderId;
    }

    public String getProjectLeaderId() 
    {
        return projectLeaderId;
    }
    public void setProjectLeaderName(String projectLeaderName) 
    {
        this.projectLeaderName = projectLeaderName;
    }

    public String getProjectLeaderName() 
    {
        return projectLeaderName;
    }
    public void setProjectLeaderLink(String projectLeaderLink) 
    {
        this.projectLeaderLink = projectLeaderLink;
    }

    public String getProjectLeaderLink() 
    {
        return projectLeaderLink;
    }
    public void setSupervisor(String supervisor) 
    {
        this.supervisor = supervisor;
    }

    public String getSupervisor() 
    {
        return supervisor;
    }
    public void setTeamSize(Long teamSize) 
    {
        this.teamSize = teamSize;
    }

    public Long getTeamSize() 
    {
        return teamSize;
    }
    public void setReviewStatus(String reviewStatus) 
    {
        this.reviewStatus = reviewStatus;
    }

    public String getReviewStatus() 
    {
        return reviewStatus;
    }
    public void setTotalScore(Long totalScore) 
    {
        this.totalScore = totalScore;
    }

    public Long getTotalScore() 
    {
        return totalScore;
    }
    public void setProjectStatus(Long projectStatus) 
    {
        this.projectStatus = projectStatus;
    }

    public Long getProjectStatus() 
    {
        return projectStatus;
    }
    public void setDelFlag(String delFlag) 
    {
        this.delFlag = delFlag;
    }

    public String getDelFlag() 
    {
        return delFlag;
    }
    public void setStartDate(Date startDate) 
    {
        this.startDate = startDate;
    }

    public Date getStartDate() 
    {
        return startDate;
    }
    public void setEndDate(Date endDate) 
    {
        this.endDate = endDate;
    }

    public Date getEndDate() 
    {
        return endDate;
    }
    public void setCreatedTime(Date createdTime) 
    {
        this.createdTime = createdTime;
    }

    public Date getCreatedTime() 
    {
        return createdTime;
    }
    public void setCreatedBy(String createdBy) 
    {
        this.createdBy = createdBy;
    }

    public String getCreatedBy() 
    {
        return createdBy;
    }
    public void setUpdatedBy(String updatedBy) 
    {
        this.updatedBy = updatedBy;
    }

    public String getUpdatedBy() 
    {
        return updatedBy;
    }
    public void setUpdatedTime(Date updatedTime) 
    {
        this.updatedTime = updatedTime;
    }

    public Date getUpdatedTime() 
    {
        return updatedTime;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("projectName", getProjectName())
            .append("projectDescription", getProjectDescription())
            .append("projectLeaderId", getProjectLeaderId())
            .append("projectLeaderName", getProjectLeaderName())
            .append("projectLeaderLink", getProjectLeaderLink())
            .append("supervisor", getSupervisor())
            .append("teamSize", getTeamSize())
            .append("reviewStatus", getReviewStatus())
            .append("totalScore", getTotalScore())
            .append("projectStatus", getProjectStatus())
            .append("delFlag", getDelFlag())
            .append("startDate", getStartDate())
            .append("endDate", getEndDate())
            .append("createdTime", getCreatedTime())
            .append("createdBy", getCreatedBy())
            .append("updatedBy", getUpdatedBy())
            .append("updatedTime", getUpdatedTime())
            .append("remark", getRemark())
            .toString();
    }
}
